(◍´ಲ`◍)
嗨,我是wec,今天是DAY 13。
給定一個二元樹,找出其最大深度。
1.二元樹的深度:從根節點到最遠葉子節點的最長路徑上的節點數。
2.葉子節點:沒有子節點的節點。
第1步: 如果節點為nil
(空節點),直接返回 0,表示沒有深度。
第2步: 對當前節點的左子樹和右子樹各自進行遞迴計算,找出它們的最大深度。
第3步: 從左子樹和右子樹的深度中取較大的值,加上 1(包含當前節點),這就是從這個節點開始的最大深度。
程式碼:
def max_depth(root)
return 0 if root.nil?
left_depth = max_depth(root.left)
right_depth = max_depth(root.right)
[left_depth, right_depth].max + 1
end
遞迴法: 時間複雜度為O(n),n為節點數量。
➡️ 用遞迴法就可以輕鬆解決二元樹的問題了!因為二元樹每個子節點都是獨立的樹,遞迴法就可很又效率的去遍歷整棵樹,計算每層的深度,作為二元樹最經典的解法,遞迴也是非常值觀的方法。
那麽,以上就是今天的內容!
相信IT人動腦時都要吃點東西,所以今天邊寫邊吃卡哩卡哩。
明天要說:Ruby精選刷題!Medium路跑D-6(>∀・)⌒☆